package tech.aistar.corejava.day03;

/**
 * @author success
 * @version 1.0
 * @description:本类用来演示:总结:方法的参数的传递的方式
 * @date 2019/7/17 0017
 */
public class ArrayDemo3 {
    public static void main(String[] args) {
        //1. 基本类型 - 变量保存就是值 - 采用的就是值传递
        //基本类型传递的之后,将值拷贝一份给了方法的形参.
        //文件的拷贝操作
        int a = 10;
        int b = 20;

        change(a,b);

        System.out.println("a:"+a);//10
        System.out.println("b:"+b);//20


        System.out.println("=============================");


        //对象类型 - 采用引用传递或者地址传递
        //磁盘的窗口
        int[] arr1 = new int[]{1,2};
        int[] arr2 = new int[]{3,4};
        add(arr1,arr2);
        System.out.println(arr1[0]);//100
        System.out.println(arr2[0]);//3

    }
    /**
     *
     * @param arr1
     * @param arr2
     */
    public static void add(int[] arr1, int[] arr2) {
        arr2 = arr1;
        arr1[0] = 100;
        System.out.println("arr1[0]:"+arr1[0]);//100
        System.out.println("arr2[0]:"+arr2[0]);//100
    }

    public static void change(int a, int b) {
        a = a^b;
        b = a^b;
        a = a^b;

        System.out.println("a=====>"+a);//20
        System.out.println("b=====>"+b);//10
    }
}
